import dayjs from 'dayjs'
import relativeTime from 'dayjs/plugin/relativeTime'
import 'dayjs/locale/zh-cn'

dayjs.extend(relativeTime)
dayjs.locale('zh-cn')

/**
 * 格式化时间
 * @param {string|number|Date} time 时间
 * @param {string} format 格式化模式，默认为 'YYYY-MM-DD HH:mm:ss'
 * @returns {string} 格式化后的时间字符串
 */
export const formatTime = (time, format = 'YYYY-MM-DD HH:mm:ss') => {
  if (!time) return ''
  return dayjs(time).format(format)
}

/**
 * 获取相对时间
 * @param {string|number|Date} time 时间
 * @returns {string} 相对时间字符串，如：刚刚、1分钟前、1小时前、1天前等
 */
export const fromNow = (time) => {
  if (!time) return ''
  return dayjs(time).fromNow()
}

/**
 * 判断是否为同一天
 * @param {string|number|Date} time1 时间1
 * @param {string|number|Date} time2 时间2
 * @returns {boolean} 是否为同一天
 */
export const isSameDay = (time1, time2) => {
  return dayjs(time1).isSame(time2, 'day')
}

/**
 * 获取时间范围
 * @param {string} type 类型：today-今天, week-本周, month-本月, year-本年
 * @returns {Array} [开始时间, 结束时间]
 */
export const getTimeRange = (type) => {
  const now = dayjs()
  switch (type) {
    case 'today':
      return [
        now.startOf('day').format('YYYY-MM-DD HH:mm:ss'),
        now.endOf('day').format('YYYY-MM-DD HH:mm:ss')
      ]
    case 'week':
      return [
        now.startOf('week').format('YYYY-MM-DD HH:mm:ss'),
        now.endOf('week').format('YYYY-MM-DD HH:mm:ss')
      ]
    case 'month':
      return [
        now.startOf('month').format('YYYY-MM-DD HH:mm:ss'),
        now.endOf('month').format('YYYY-MM-DD HH:mm:ss')
      ]
    case 'year':
      return [
        now.startOf('year').format('YYYY-MM-DD HH:mm:ss'),
        now.endOf('year').format('YYYY-MM-DD HH:mm:ss')
      ]
    default:
      return []
  }
} 